package itsm.isperp.framework.upload;

import itsm.isperp.framework.domain.UploadInfo;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;

import org.springframework.stereotype.Component;

/**
 * 文件上传保存抽象类
 * 
 */
@Component
public interface FilePersister {

	/**
	 * 保存文件
	 * 
	 * @param inputStream
	 *            文件输入流
	 * @return 返回文件名
	 * @throws IOException
	 * @throws SQLException
	 */
	public File persist(InputStream inputStream, UploadInfo uploadInfo)
			throws IOException;

	/**
	 * 根据文件ID获取对应的文件流
	 * 
	 * @param id
	 * @return 返回文件的InputStream
	 * @throws IOException
	 * @throws SQLException
	 */
	public InputStream get(String id) throws IOException;

	/**
	 * 根据文件ID删除文件信息
	 * 
	 * @param id
	 * @throws IOException
	 * @throws SQLException
	 */
	public void delete(String id) throws IOException;

	/**
	 * 判断当前类是否支持文件处理
	 * 
	 * @param store
	 *            存储位置
	 * @return 返回当前类是否支持
	 */
	public boolean support(String store);

	/**
	 * 设定保存存储文件的类型
	 * 
	 * @param store
	 *            存储位置
	 */
	public void setStore(String store);
}
